# GF_PY312_CLASS_Python3_SQLite3.py
# Create by GF 2025-04-02 11:11

# Python 3 Standard Libraries.
import sqlite3

# ##################################################

class Python3_SQLite3(object):

    def __init__(self):

        self.SQLITE3_DB_NAME = ''

    def SQLite3_Parameterize_Query(self, SQLite3_Conn, SQL_Statment:str, Values_Tuple:tuple) -> int:

        # Requierement: sqlite3 (Python 3.12.0)
        #
        # Python 3 SQLite 3 Parameterize Query Example:
        #
        # >>> conn = sqlite3.connect('example.db')
        # >>> cursor = conn.cursor()
        #
        # 使用参数化查询执行 INSERT / UPDATE, 可以避免潜在的转义问题, 如 (') 单引号的转义。
        #
        # >>> cursor.execute("INSERT INTO users (name) VALUES (?)", ('O\'Reilly',))
        # >>> conn.commit()
        # >>> conn.close()
        #
        # 语法技巧:
        # - 当只有 1 个 ? 参数占位符时, Python 3 中使用 ("Hello",) 单值元组 (Tuple) 来传递单值。

        Cursor = SQLite3_Conn.cursor()
        # ..........................................
        Cursor.execute(SQL_Statment, Values_Tuple) # 执行 INSERT / UPDATE 语句
        # ..........................................
        SQLite3_Conn.commit()                              # 需要额外调用 Conn.commit() 提交事务
        # ..........................................
        return 1                                   # 返回 1 表示执行成功

    def SQLite3_Query(self, SQL_Statment:str):

        # Requierement: sqlite3 (Python 3.12.0)

        Conn = sqlite3.connect('llm_prompt.db')    # 连接到 SQLite 3 数据库 (不存在会自动创建)
        # ..........................................
        Cursor = Conn.cursor()
        # ..........................................
        Cursor.execute(SQL_Statment)               # 执行 SELECT 语句
        # ..........................................
        Rows = Cursor.fetchall()
        # ..........................................
        Conn.close()
        # ..........................................
        return Rows
